package com.qq.open.qzone.fans;

import java.io.IOException;

import org.apache.log4j.Logger;

import com.qq.open.common.OpenQqConstants;
import com.qq.open.common.OpenQqUtils;
import com.qq.open.common.json.JSONException;
import com.qq.open.common.json.JSONObject;
import com.qq.open.qzone.bean.param.QqCheckPageFansParamBean;
import com.qq.open.qzone.bean.result.QqCheckPageFansResultBean;


/**
 * 验证登录的用户是否为某个认证空间的粉丝
 * 
 * @author HaoLiang
 * @version 0.1.1
 */
public class QqCheckPageFans {
	
	/** QQ互联工具类 */
	private	OpenQqUtils oqu = new OpenQqUtils();
	
	/** 日志 */
	private Logger log = Logger.getLogger(QqCheckPageFans.class);

	
	/**
	 * 验证登录的用户是否为某个认证空间的粉丝
	 * 
	 * @param paramBean 参数Bean
	 * @return 验证结果
	 * @throws IOException 
	 * @throws JSONException 
	 */
	public QqCheckPageFansResultBean checkPaeFans(QqCheckPageFansParamBean paramBean) throws IOException, JSONException {
		
		// 日志
		log.info("验证登录的用户是否为某个认证空间的粉丝 开始....");
		
		// 获取验证粉丝的URL 
		String checkPageFansUrl = this.getCheckPageFansUrl(paramBean);
		
		// 获取接口返回的内容
		String jsonData = oqu.doGet(checkPageFansUrl);
		
		// 认证空间的粉丝返回用 
		QqCheckPageFansResultBean resultBean = new QqCheckPageFansResultBean();
		
		// JSON操作类
		JSONObject jsonObj;
		
		try {
			// 获取接口返回的JSON数据
			jsonObj = new JSONObject(jsonData);
		
			if (jsonObj.getInt("ret") == 0) {
				// 错误标识
				resultBean.setErrorFlg(false);
				
				// 认证空间标识
				resultBean.setIsFans(jsonObj.getInt("isfans"));
			} else {
				// 错误标识
				resultBean.setErrorFlg(true);
				
				// 错误编号
				resultBean.setErrorCode(jsonObj.get("ret").toString());
				
				// 错误信息
				resultBean.setErrorMes(jsonObj.getString("msg"));
			}
			
		} catch (JSONException e) {
			e.printStackTrace();
			// 日志
			log.error("checkPaeFans 异常，json数据是：" + jsonData);
			throw e;
		}
		// 日志
		log.info("验证登录的用户是否为某个认证空间的粉丝 结束....");
		
		return resultBean;
	}
	
	
	
	/**
	 * 获取验证粉丝的URL
	 * 
	 * @param paramBean 参数Bean
	 * @return 验证粉丝URL
	 */
	private String getCheckPageFansUrl(QqCheckPageFansParamBean paramBean) {
		
		StringBuilder checkFansUrl = new StringBuilder();
		
		// 验证认证空间的粉丝接口的地址
		checkFansUrl.append(OpenQqConstants.QQ_CHECK_PAGE_FANS_URL);
		
		// AccessToken
		checkFansUrl.append("?access_token=" + paramBean.getAccessToken());
		
		// AppId
		checkFansUrl.append("&oauth_consumer_key=" + oqu.getConfigValue("qq.appid"));
		
		// Openid
		checkFansUrl.append("&openid=" + paramBean.getOpenId());
		
		// 表示认证空间的QQ号码。
		checkFansUrl.append("&page_id=" + paramBean.getQzoneQq());
		
		// 定义API返回的数据格式
		checkFansUrl.append("&format=json");
		
		return checkFansUrl.toString();
	}
}
